package com.spy.material.dto;

import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.util.List;

/**
 * 新增出库单DTO
 */
@Data
public class OutboundOrderCreateDTO {
    
    /**
     * 出库单标题
     */
    @NotBlank(message = "出库单标题不能为空")
    @Size(max = 100, message = "出库单标题长度不能超过100个字符")
    private String title;
    
    /**
     * 出库日期
     */
    @NotBlank(message = "出库日期不能为空")
    @Pattern(regexp = "\\d{4}-\\d{2}-\\d{2}", message = "出库日期格式必须为YYYY-MM-DD")
    private String outboundDate;
    
    /**
     * 出库人
     */
    @NotBlank(message = "出库人不能为空")
    @Size(max = 50, message = "出库人姓名长度不能超过50个字符")
    private String outboundPerson;
    
    /**
     * 配送点
     */
    @NotBlank(message = "配送点不能为空")
    @Size(max = 100, message = "配送点名称长度不能超过100个字符")
    private String fullName;
    
    /**
     * 出库类型
     */
    @NotBlank(message = "出库类型不能为空")
    @Size(max = 50, message = "出库类型长度不能超过50个字符")
    private String outboundType;
    
    /**
     * 出库总数
     */
    @NotNull(message = "出库总数不能为空")
    @Min(value = 1, message = "出库总数必须大于0")
    private Integer totalOutboundQuantity;
    
    /**
     * 总金额
     */
    @NotNull(message = "总金额不能为空")
    @DecimalMin(value = "0.0", inclusive = false, message = "总金额必须大于0")
    private BigDecimal totalAmount;
    
    /**
     * 出库明细列表
     */
    @Valid
    @NotEmpty(message = "出库明细不能为空")
    private List<OutboundOrderDetailCreateDTO> details;
}